ホームページ >バックエンド開発 >PHPチュートリアル >これをmysql文に置き換える場合はどう書けばよいのでしょうか?

これをmysql文に置き換える場合はどう書けばよいのでしょうか?

WBOY
WBOYオリジナル
2016-06-23 13:45:38822ブラウズ

私の質問:
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),'') where id=2452

この場合、フィールド全体の値がすべて使い果たされます

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

この場合、フィールド全体の値 それはすべて価値があります
update ylmf_site set url = SUBSTRING_INDEX(url,'url=',-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
ウェブサイト 2: http://p.yiqifa.com/n?k=2mLErnws6E4H2mLErI6H2mLsWN3OrnDsWN2e6QLs1NDF6ZLErZyH2mLe6n6w3E3LMZqt6cuLUJeH&spm=1.1.1.1&t=http://www.xuan sou.com/
この2つのURLのうち、 http://www.xuansou.com の前は、「前にある文字列」を指します

mysql 正規表現を実装するのが簡単ではないのではないかと心配しています。面倒ですが、xxxx_index を使用することもできます。少し

ylmf_site set url = concat('http', SUBSTRING_INDEX(url,'=http',-1)) where id=2452

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。