ホームページ >バックエンド開発 >PHPチュートリアル >preg_replace について非常に混乱していますか?
$thumbMark = '200x200';$thumb =$r['thumb'];echo $r['thumb'].'<br />'; // http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg //$thumb='http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg';$r['thumb'] = preg_replace('/_\d+x\d+/', '_' . $thumbMark,$thumb);echo $r['thumb'].'<br />'; // http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg
$thumbMark = '200x200';$thumb =$r['thumb'];echo $r['thumb'].'<br />'; // http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg$thumb='http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg';$r['thumb'] = preg_replace('/_\d+x\d+/', '_' . $thumbMark,$thumb);echo $r['thumb'].'<br />'; // http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_200x200.jpg
var_dump($r['thumb'])
結果を投稿
var_dump($r['thumb']);
結果を投稿する
string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg"
次のようなコードをブロックします:
($r = while $ db-> fetch_array ($ result){heer $ == 1){200x200 '; http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg 1405800222483 0.9000001763_100x100.jpg';
//echo $r['thumb'].'< ;br />' ;
$list の値を確認する
$list の値を確認する
if ($list == 1) {
$thumbMark = '200x200 ';
echo 'list:'.$list; // リスト:1
}
普通
初めて PHP に触れたとき、奇妙な問題に遭遇するとは思いませんでした。環境の問題ですか?
正規表現「/_d+xd+/」の途中にある x を削除すると、通常どおりに置き換えることができ、出力は「http://img2.com.cn/images/2014/038」になります。 /422/14058002224830.9000001763_200x200x100.jpg" ";
とても奇妙です、この「x」は誰を怒らせたのですか?
正規表現「/_d+xd+/」の途中にある x を削除すると、通常どおりに置き換えることができ、出力は「http://img2.com.cn/images/2014/038」になります。 /422/14058002224830.9000001763_200x200x100.jpg" ";
とても奇妙です、この「x」は誰を怒らせたのですか?
では、なぜ次のように値を直接割り当てる必要があるのでしょうか:
$thumb='http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg ';
問題ありません。
教えていただいたものにはエラーは見当たりません。慎重にデバッグしてください
var_dump($r['thumb']);
string(85) " http:// img2 .com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg"
文字列は 76 文字しかありませんが、なぜ string(85) なのでしょうか?
通常のことが理解できない場合は、ソースから始めるしかありません
$str = '_100x100.jpg';
echo preg_replace('/_/', '', $str); /_d+/' , '', $str);
echo preg_replace('/_d+x/', '', $str);
echo preg_replace('/_d+xd+/', '', $str);
どれを見てください 質問がある場合は、理解できたら試してください...
var_dump($r['thumb'])
結果を投稿してください
string(85) " http://img2 .com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg"
文字列は 76 文字しかありませんが、なぜ string(85) なのでしょうか?
これは本当に奇妙で、最終的には正規表現「/_d+.{6}d+/」で解決されました。おそらくphpの関数で、6つの未知のものによって「x」が生成されます。 85-76=9、9 である必要があります。最後の 3 つは数字でも構いません。
「x」は、他の 9 文字に変換されたことが判明しました。これは、エンコーディングの違いが原因である可能性があります。
訂正、「x」 生成された 6 つは正しいです、
string(85) "http://img2.com.cn/images/2014/038/422/14058002224830.9000001763_100x100.jpg"、以下の文字が修正されました人為的に削除された 3