ユーザは記事のデータベースを更新でき、いくつかの特別な機能のためにBBCodeの簡単なセットを使用する基本的なCMSがあります。<a>をデータベースに挿入するときにPHPスクリプトがnullを返す
基本的に、ユーザは記事情報をHTMLフォームに入力し、「公開」ボタンをクリックすると、BBCodeをHTMLに変換するためにRegexを使用するサーバ上のPHPスクリプトにAJAXリクエストが送信されますMySQLを使用して情報をデータベースに保存します。
私の問題は、別の問題を解決した直後であり、サーバーサイドのスクリプトであり、エラーメッセージが一切表示されないため、デバッグが非常に難しいという点で不幸な点です。
私はRegex、特により複雑なタグで問題を抱えていました。私は[link = URL] FOOBAR [/ link]タグを正しく一致させてFOOBARに置き換えることができました。しかし何らかの理由で、これでスクリプトがハングしたり失敗したりするようになりました。なぜなら、[link]タグが含まれていてもデータベースに何も更新されていないからです。
私はSQLを稼働させたい時に先にデバッグするために、成功したときには "1"と思うmysql_query()関数の戻り値をPHPスクリプトに返すようにしました。 0 "になります。しかし、現在は何も返しません.HTTPRequestは長さ0の文字列を返します。ここで
はコードです:
$post = $_POST['post'];
$regex = Array('#(\r?\n)#', '#(\[(\/?)(b|i|u)\])#', '#\[link=(http://(www.)?.*?)\](.*?)\[/link\]#', '#(\[youtube\][http://www.youtube.com/watch?v=]?(\w+)[&\w+]?\[/youtube\])#', '#(\[img\](http://[www.]?[\w+])\[/img\])#');
$regReplace = Array('<br />', '<$2$3>', '<a href="$1">$3</a>', '<div class="media"><iframe title="YouTube video player" width="560" height="315" src="http://www.youtube.com/embed/$2" frameborder="0" allowfullscreen></iframe></div>',
'<div class="media"><img width="560" src="$2" /></div>');
$post = preg_replace($regex, $regReplace, $post);
echo mysql_query('INSERT INTO News VALUES (NULL, "'.Date('D jS M').'", "'.Date('G:i').'", "'.$_POST['heading'].'", "'.$post.'")');
私はIMGとYouTubeのregexsが動作しないことを認識しています...
多くのWebホストでは、SSHまたは特別なコントロールパネルページからPHPエラーログにアクセスできます。まだ試していない場合は、ホストのオプションを確認するか、リクエストを送信してください。ログにアクセスしないでPHPをデバッグするのはひどいことがあります! – octern