質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Q&A

解決済

2回答

3024閲覧

phpでurlをエンコードしたい。

seel

総合スコア25

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

0グッド

0クリップ

投稿2016/06/20 20:01

編集2016/06/20 20:29

こんにちは、お世話になります。
目的は多数のファイル内にあるurlをphpでエンコードすことです。

使ったコマンド

echo(); file_get_contents(); str_replace(); urlencode(); array();

ファイル内のurlをエンコードするためfile_get_contentsで取得後、
str_replaceでファイル全体のurlだけに対してエンコード置換をしたくて
str_replaceの中にurlencodeを組み込む必要がでてきました。
たくさんのやりかたがあると思うのですが今はこんな感じかと思っています。

sample.php $subject= "http://exmple.com/test.php"; $search = array('test'); $replace = array('TEST'); echo str_replace($search,$replace,$subject);

この方法でファイル全体に対してtestをTESTに置換はできました。
タグはこんな形になっています。
(エンコードするurlの種類は2種類だけです)

<a href="http://exmple.com/test_a/test2/test3/"> <a href="http://exmple.com/test_b/test2/test3/"> ```このtest3部分がランダムになっています。 試しにこれをnkfで手動でエンコードするとこうなりした。 ```ここに言語を入力 http%3A%2F%2Fexmple%2Ecom%2Ftest%5Fa%2Ftest2%2Ftest3%2F http%3A%2F%2Fexmple%2Ecom%2Ftest%5Fb%2Ftest2%2Ftest3%2F

たとえば下記のようにurlencodeを組み込めれば・・・。

test.php file_get_contents("http://exmple.com/test.php");//ファイルの取得 $subject= "test.txt";//ファイル名の定義 $url = 'http://exmple.com/(test_a|tes_b)/$1';//url取得正規表現 $search = array("{$url}");//取得したurlを配列に格納 $replace = array('urlencode("{$url}")');//エンコードして配列に格納.. echo str_replace($search,$replace,$subject);//置換し配列に上書きして出力..

正規表現、配列やurlencodeの組み込みなど
こんなふうにできればと思っています。

あまり難しいことはよくわからなく申し訳ないのですが
どなたか教えていただけたらと思い質問させていただきました。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

urlencodeの外側のシングルクォートを取ればいいだけな気がしますが・・・
私が何か勘違いしているでしょうか?

$replace = array(urlencode($url));

投稿2016/06/20 23:29

munyagu

総合スコア479

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

seel

2016/06/25 10:55 編集

シングルクォートを取ってみたのですが目的のことはできませんでした。 $html中の特定urlだけをurlエンコードしたいです。 1:$html = file_get_contents('test.php'); 2:urlencode(); 3:echo $html; 2:の部分の書き方がわからないのでよかったら教えてください。 $html内の[url]部分だけをエンコードしたいです。                       ↓ <a href="http://exmple.com/a/b/c/d/?pc=[url]"> よろしくお願いします。
guest

0

ベストアンサー

preg_replace_callback を使えば出来そうな気がします。(下記コードは未テストです)

PHP

1echo preg_replace_callback( '/http\:\/\/exmple\.com\/(test_a|tes_b)\/[^"]+/', function ( $matches ) { return urlencode( $matches[ 0 ] ); }, $subject );

【PHP: preg_replace_callback - Manual】
http://php.net/manual/ja/function.preg-replace-callback.php

投稿2016/06/25 11:01

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問