3

基本的に、xenforo のフォーラム スクリプト データベースをカスタム データベースに変換しようとしています (xenforo での使用をやめました)。その bbcode が私を悩ませています。

私はこれですべてのURL bbcodeを彼らのものから私のものに変更しようとしています:

$message = preg_replace("/\[url\=\'(.+?)\'\](.+?)\[\/url\]/is",
                        "[url=$1]$2[/url]", $message);

基本的に、必要のない URL を一重引用符で囲んでいますが、コードが機能しません。

4

1 に答える 1

1

正規表現文字列に二重引用符を使用する場合、PHP はバックスラッシュも解釈するため、ダブル エスケープする必要があります。

$message = preg_replace("/\\[url='(.+?)'\\](.+?)\\[\\/url\\]/is",
                        "[url=$1]$2[/url]", $message);

テストケース

<?php
$message = "[url='http://www.example.com/test']My test URL[/url]";
$message = preg_replace("/\\[url='(.+?)'\\](.+?)\\[\\/url\\]/is",
                        "[url=$1]$2[/url]", $message);
echo "$message\n";

とその出力

[url=http://www.example.com/test]テスト URL[/url]

テストは Ubuntu 12.04 と PHP 5.3.10 で行われます。

于 2012-11-28T10:44:43.123 に答える