目次
回复讨论(解决方案)
ホームページ バックエンド開発 PHPチュートリアル $str=preg_replace('/[attach]/is','111',$str); この文の 111 を実行可能な PHP コードに置き換える方法

$str=preg_replace('/[attach]/is','111',$str); この文の 111 を実行可能な PHP コードに置き換える方法

Jun 23, 2016 pm 01:50 PM
str 埋め込む

$str=preg_replace("/\[attach\]/is","111",$str);  这一句如何把111替换成可以执行的PHP代码

比如$str=preg_replace("/\[attach\]/is","",$str);  结果出来后成字符了


回复讨论(解决方案)

$message=preg_replace("/\[url\](http:[^\]]*?)\[\/url\]/ies","_cuturl('\\1')",$message);function _cuturl($msg){	$new=cutstr($msg,20);	return $new;}
ログイン後にコピー

在正则后面加符号/e,就可以调用函数,在里面就可以执行php的操作

$str=preg_replace("/\[attach\]/is","",$str);

这个是BBCODE的PHP替换。你应该是想实现类似DISCUZ的那种附件BBCODE。
要想回调可以使用 preg_replace_callback。

<?php //author: default7<default7#zbphp.com$str = preg_replace_callback("/\[attach\](\d+)\[\/attach\]/isUe",function($attachId = 0){	//todo 	$row = $db->query("select * from tb where id=$id ")->row();	return '<img src="'.$row['pic'].'" />';},$str);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

原理如上,具体代码自己测试一下。



这个是BBCODE的PHP替换。你应该是想实现类似DISCUZ的那种附件BBCODE。
要想回调可以使用 preg_replace_callback。

<?php //author: default7<default7#zbphp.com$str = preg_replace_callback("/\[attach\](\d+)\[\/attach\]/isUe",function($attachId = 0){	//todo 	$row = $db->query("select * from tb where id=$id ")->row();	return '<img src="'.$row['pic'].'" />';},$str);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

原理如上,具体代码自己测试一下。



修正:
$str = preg_replace_callback("/\[attach\]\s*(\d+)\s*\[\/attach\]/isUe",function($match){	//todo 	$id = $match[1];	$row = $db->query("select * from tb where id=$id ")->row();	return $row ? '<img src="'.$row['pic'].'" />' : '';},$str);
ログイン後にコピー
ログイン後にコピー

$str=preg_replace("/\[attach\]/is","",$str)


这个是BBCODE的PHP替换。你应该是想实现类似DISCUZ的那种附件BBCODE。
要想回调可以使用 preg_replace_callback。

<?php //author: default7<default7#zbphp.com$str = preg_replace_callback("/\[attach\](\d+)\[\/attach\]/isUe",function($attachId = 0){	//todo 	$row = $db->query("select * from tb where id=$id ")->row();	return '<img src="'.$row['pic'].'" />';},$str);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

原理如上,具体代码自己测试一下。



修正:
$str = preg_replace_callback("/\[attach\]\s*(\d+)\s*\[\/attach\]/isUe",function($match){	//todo 	$id = $match[1];	$row = $db->query("select * from tb where id=$id ")->row();	return $row ? '<img src="'.$row['pic'].'" />' : '';},$str);
ログイン後にコピー
ログイン後にコピー




出现错误提示:Parse error: syntax error, unexpected T_FUNCTION in
指向$str = preg_replace_callback("/\[attach\]\s*(\d+)\s*\[\/attach\]/isUe",function($match){这一行

你的 php 版本是多少?

php5.2

function get($id) {  //$value = 这里是相关操作的代码  return $value;}$str = preg_replace("/\[(attach)\]/ise", "get('$1')", $str);
ログイン後にコピー

也可以
function get($r) {  //$value = 这里是相关操作的代码  return $value;}$str = preg_replace_callback("/\[(attach)\]/is", "get", $str);
ログイン後にコピー



dz的手机版不显示图片,所以我想自己写一个 显示人页面。

function get($r) {  $value = SELECT * FROM `bbs_forum_attachment_$row[tableid]` where tid =id  return $value;}$str = preg_replace_callback("/\[(attach)\]/is", "get", $str);
ログイン後にコピー


where tid =id 这个ID如何得到

你 print_r($r) 就可看到

你 print_r($r) 就可看到



function get($r) {  $value = "SELECT * FROM `bbs_forum_attachment_9` where tid =$r"  return $value;}$str = preg_replace_callback("/\[(attach)\]/is", "get", $str);
ログイン後にコピー


错误提示:Parse error: syntax error, unexpected T_RETURN

第二行的结尾分号少写了。

第二行的结尾分号少写了。



呵呵;我改成
function get($r) {  $value = "SELECT * FROM `bbs_forum_attachment_9` where tid =$r";  return $value;}$str = preg_replace_callback("/\[(attach)\]/is", "get", $str);
ログイン後にコピー

可是前天输出
SELECT * FROM `bbs_forum_attachment_9` where tid =Array26588

我想要的是SELECT * FROM `bbs_forum_attachment_9` where tid =26588 不要Array  怎么弄

我改成单引号前台输出 SELECT * FROM `bbs_forum_attachment_9` where tid =$r

是不是这段php语句没有执行,直接转成文本了

26588 从哪里来的? 在get方法里面 print_r($r); 得到什么?

改成$str = preg_replace_callback("/\[attach\](.+?)\[\/attach\]/is", "get", $str);  之后

输出:SELECT * FROM `bbs_forum_attachment_9` where tid =Array

26588 从哪里来的? 在get方法里面 print_r($r); 得到什么?




在get方法里面 print_r($r); 得到 值是  1

26588应该是第一次没有过滤干净

看不懂了,print_r($r); 怎么可能是1呢?

php5.2



忘了写明,我写的那个要 PHP 5.5+ 

php5.2    怎么写呢

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

5分ごとに実行されるPythonスクリプト 5分ごとに実行されるPythonスクリプト Sep 10, 2023 pm 03:33 PM

自動化とタスクのスケジューリングは、ソフトウェア開発における反復的なタスクを合理化する上で重要な役割を果たします。 API からのデータの取得、データ処理の実行、定期的な更新の送信など、5 分ごとに実行する必要がある Python スクリプトがあると想像してください。スクリプトを手動で頻繁に実行すると、時間がかかり、エラーが発生しやすくなります。ここでタスクのスケジュール設定が役に立ちます。このブログ投稿では、Python スクリプトを 5 分ごとに実行するようにスケジュールし、手動介入なしで自動的に実行されるようにする方法を説明します。この目標を達成するために使用でき、タスクを効率的に自動化できるさまざまな方法とライブラリについて説明します。 time.sleep() 関数を使用して Python スクリプトを 5 分ごとに実行する簡単な方法は、tim を利用することです。

Linux でのスクリプト作成と実行に Python を使用する方法 Linux でのスクリプト作成と実行に Python を使用する方法 Oct 05, 2023 am 11:45 AM

Python を使用して Linux でスクリプトを作成および実行する方法 Linux オペレーティング システムでは、Python を使用してさまざまなスクリプトを作成および実行できます。 Python は、スクリプト作成をより簡単かつ効率的にするための豊富なライブラリとツールを提供する、簡潔で強力なプログラミング言語です。以下では、Linux で Python を使用してスクリプトを作成および実行する基本的な手順を紹介し、Python をよりよく理解して使用するのに役立つ具体的なコード例をいくつか示します。 Pythonをインストールする

Python でブラウン フォーサイス テストを実行する方法 Python でブラウン フォーサイス テストを実行する方法 Aug 31, 2023 pm 11:53 PM

ブラウン フォーサイス検定は、2 つ以上のグループの分散が等しいかどうかを判断するために使用される統計検定です。 Levene の検定では平均値からの絶対偏差が使用されますが、Brown-Forsythe 検定では中央値からの偏差が使用されます。検定で使用される帰無仮説は次のとおりです - H0: グループ (母集団) の分散は等しい. 対立仮説は、分散が等しくないということです - H1: グループ (母集団) の分散は等しくないです。検定を実行すると、各グループの中央値と中央値との相関、桁数の絶対偏差が計算されます。次に、これらの偏差の分散に基づいて F 統計量を計算します。計算された F 統計量が F 分布表の臨界値より大きいと仮定します。この場合、帰無仮説は棄却され、グループの分散は等しくないと結論付けられます。 Python では、sc

Python で ANCOVA を実行するにはどうすればよいですか? Python で ANCOVA を実行するにはどうすればよいですか? Sep 01, 2023 pm 05:21 PM

ANCOVA (共分散分析) は、分析に共変量を含めることができるため、有用な統計手法です。これにより、補助変数を調整し、グループ間の比較の精度を高めることができます。これらの追加の因子または共変量は、ANCOVA を使用して研究に含めることができます。観察されたグループ間の差異が外部要因によるものではなく、研究における治療または介入によって引き起こされていることを確認するために、ANCOVA を使用してグループ平均に対する共変量の影響を調整できます。これにより、グループ間のより正確な比較が可能になり、変数間の関係についてより信頼性の高い結論が得られます。この記事では、ANCOVA を詳しく見て、Python で実装します。アンコバとは何ですか?共分散分析 (ANCOVA) 法は、2 つ以上のグループを比較します。

ブラウザで PHP コードを記述し、コードが実行されないようにするにはどうすればよいでしょうか? ブラウザで PHP コードを記述し、コードが実行されないようにするにはどうすればよいでしょうか? Mar 10, 2024 pm 02:27 PM

ブラウザで PHP コードを記述し、コードが実行されないようにするにはどうすればよいでしょうか?インターネットの普及に伴い、Web開発に触れる人が増え、PHPの学習にも注目が集まっています。 PHP はサーバー側で実行されるスクリプト言語であり、動的な Web ページを作成するためによく使用されます。ただし、演​​習フェーズでは、ブラウザーで PHP コードを作成して結果を確認できるようにしたいと考えていますが、コードが実行されることは望ましくありません。では、ブラウザで PHP コードを記述し、それが実行されないようにするにはどうすればよいでしょうか?以下、詳細に説明する。初め、

Python組み込み型strソースコード解析 Python組み込み型strソースコード解析 May 09, 2023 pm 02:16 PM

1 Unicode コンピュータ ストレージの基本単位は 8 ビットで構成されるバイトです。英語は 26 文字といくつかの記号のみで構成されているため、英語の文字はバイト単位で直接格納できます。ただし、他の言語 (中国語、日本語、韓国語など) では、文字数が多いため、エンコードに複数のバイトを使用する必要があります。コンピューター技術の普及に伴い、非ラテン文字エンコード技術は発展を続けていますが、依然として 2 つの大きな制限があります。 多言語サポートがないこと。 ある言語のエンコード スキームを別の言語で使用することはできません。また、統一された標準もありません。たとえば、中国語には GBK、GB2312、GB18030 など、多くのエンコード標準があります。エンコード方式が統一されていないため、開発者は異なるエンコード間で相互に変換する必要があり、必然的に多くのエラーが発生します。

Linux環境での.shファイル実行の問題に対処するにはどうすればよいですか? Linux環境での.shファイル実行の問題に対処するにはどうすればよいですか? Mar 14, 2024 pm 03:36 PM

Linux 環境では、.sh ファイルを実行する必要がある状況によく遭遇します。 .sh ファイルは Linux システムのスクリプト ファイルであり、通常は接尾辞として .sh が付き、一連のコマンドを実行するために使用されます。しかし、権限の問題やエンコード形式などの理由により、.sh ファイルを実行できないという問題が発生することがあります。この記事では、Linux 環境で .sh ファイルの実行の問題に対処する方法と、具体的なコード例を紹介します。 1. 次の場合、Linux システムに実行権限を追加します。

Python の __str__ と __repr__ の類似点と相違点は何ですか? Python の __str__ と __repr__ の類似点と相違点は何ですか? Apr 29, 2023 pm 07:58 PM

__str__ と __repr__ の類似点と相違点は何ですか? 文字列の表現については誰もが知っています。Python の組み込み関数 repr() は、識別を容易にするためにオブジェクトを文字列の形式で表現できます。これが「文字列表現」です。 repr() は、特別なメソッド __repr__ を通じてオブジェクトの文字列表現を取得します。 __repr__ が実装されていない場合、ベクトルのインスタンスをコンソールに出力すると、結果の文字列が次のようになります。 >>>classExample:pass>>>print(str(Example()))>>>

See all articles