0

次のような文字列があるとしましょう:

$string = 'Lorem Ipsum available, <a href="##article-6##">but the majority</a> have suffered alteration in some form, by injected humour.';

注意してください<a href="##article-6##">but the majority</a>

これを使用して、データベースからの ID に基づいて記事をリンクしたいと考えています。

さて、その文字列に対して preg_replace を実行して、そのようなものがあるかどうかを確認し、##article-6##その番号のみを抽出するにはどうすればよいですか?

このアイデアは良いものですか?より良い方法でそれを行うことはできますか?

編集:

私はこのようにしました:

$post_content = preg_replace_callback('/##article-(\d+)##/', function($matches){$args = explode(',', $matches[1]); // separate the arguments
return call_user_func_array('article_seo_url', $args); /* pass the arguments to article_seo_url function*/ }, $post_content);

このコードを使用すると、複数の URL を置き換えることもできます

4

3 に答える 3

1

を実行したい場合はpreg_replace、次のような正規表現を使用して、次の/##article-(\d+)##/ようにします。

$string = 'Lorem Ipsum available, <a href="##article-6##">but the majority</a> have suffered alteration in some form, by injected humour.';
$string = preg_replace('/##article-(\d+)##/', 'link/to/article/with/id/$1.html', $string);

$string は次のようになります。

Lorem Ipsum available, <a href="link/to/article/with/id/6.html">but the majority</a> have suffered alteration in some form, by injected humour.
于 2012-10-14T21:14:28.863 に答える
0

IDが常に3桁の場合は、正規表現も必要ありません。

$string = 'Lorem Ipsum available, <a href="##article-6##">but the majority</a> have suffered alteration in some form, by injected humour.';
$start = strpos($string, 'article-');
$articleId = substr ( $string , intval($start)+8 , 3 );
于 2012-10-14T21:02:51.843 に答える
0

href が次のような変数に格納されている場合:

$href="http://www.domain.com";

次のように、文字列に直接挿入できます。

$string = "Lorem Ipsum available, <a href=\"$href\">but the majority</a> have suffered alteration in some form, by injected humour.";

リテラルの引用符をエスケープするか、別の種類 (この場合は singles) を使用することが重要であることに注意してください。

于 2012-10-14T21:04:48.653 に答える