ホームページ >バックエンド開発 >PHPチュートリアル >これをmysql文に置き換える場合はどう書けばよいのでしょうか?
私の質問:
URL をインターセプトするための正規置換表現を見つける
http://p.yiqifa.com/n?k=2mLErnws6E4H2mLErI6H2mLsWN3OrnDsWN2e6QLs1NDF6ZLErZyH2mLe6n6w3E3LMZqt6cuLUJeH&spm=1.1 1.1&t=http://www.xuansou.com /
このような URL の場合、2 番目の http:// より前のすべてのコンテンツを空に置き換えたいです
つまり、http://www.xuansou.com/ を保持したいだけです
どうすればよいですかする必要があります、ありがとう、私はルーキーです
モデレーター jordan102 の正解は終了しました:
$s = 'http://p.yiqifa.com/n?k=2mLErnws6E4H2mLErI6H2mLsWN3OrrnDsWN2e6QLs1NDF6ZLErZyH2mLe6n6w3E3LMZqt6cuLUJeH &spm=1.1.1&t= http://www.xuansou.com/';
echo preg_replace('/.+?t=/', '', $s);
上記は php コードです。
これを mysql に置き換えると、ステートメント、どう書けばいいですか?
SUBSTRING_INDEX(field name, 't=', -1)
この場合、フィールド全体の値がすべて使い果たされます
update alibaba_site set url = replace(url,SUBSTRING_INDEX(url,'t=', -1),'') ここで id=2452
この場合、フィールド全体の値は完全に完成しています
update alibaba_site set url = replace(url,SUBSTRING_INDEX(url,'t=',-1),'' ) where id=2452
このように動作しますが、問題があります
つまり、最後の URL の前の文字列は次のとおりです
常に変化しており、バッチが置き換えられるたびに変更する必要があります
これは PHP で処理するのが最適です。MySQL は複雑な正規表現をサポートしていません。フィールドに格納された値が満足のいくものではないと思われる場合は、PHP で通常の置換スクリプトを作成して実行できます。
「前の文字列」とは何を指しますか?
ウェブサイト 1: http://click.linktech.cn/?m=idaphne&a=A100113464&l=99999&l_cd1=0&l_cd2=1&u_id=88819&tu=http%3A%2F%2Fwww。 xuansou.com%2F
ylmf_site set url = concat('http', SUBSTRING_INDEX(url,'=http',-1)) where id=2452