PHPですと、ereg
Perlですと、index等を使ってフォームから送られてきた文字を検索したいのですが、" ー "を使うと、PHPでは、エラーになり、Perlだと検索にかからなくなってしまいます。単語で例を挙げますと、"フォーム"などです。他の文字は平気みたいなんですけど、どういった原因が考えられるでしょうか。また、その対処法もできれば教えてください。ちなみにWindowsのメモ帳でやってます。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

文字列をコンバートしてから使用すれば大丈夫かと思います。



jcode::convert(\$keyword, 'euc');

など、jcode.plを使って検索したいファイル(?)と同じ文字コードに変換してみてください。

$keyword - 検索文字列の入った変数
euc    - 文字コード(他sjisなど)

この回答への補足

検索した文字はコンバートしていたんですけど、データファイルも今度コンバートしてみたんですけど
&jcode'convert(*$line, "sjis");  このように

どうしてもだめですね、'ー'だけだめなんですよね、パソコンがおかしいんでしょうか、、、すごいはまっちゃった感じです、、、

補足日時:2001/10/13 00:55
    • good
    • 0
この回答へのお礼

shift-jis ではなくて、eucで文字コードをそろえたら無事'ー'検索できました。
かなり初歩的な質問になってしまいました、、、ありがとうございました。助かりました。
文字コードってめんどうですね

お礼日時:2001/10/13 01:24

phpならi18n版のmbxxxx関数を使ってみましょう。


perlならjcode.plを使いましょう。

この回答への補足

ご回答ありがとうございます。
Perlではもちろんjcode.plを使ってますよ。でもだめなんですよ
phpのi18n版のmbxxxx関数はちょっとわからないです、、、

補足日時:2001/10/12 05:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QPOSIX系(ereg)とPerl互換系(preg_match)、PHPの実務で多用されるのはどっち?

PHPの実務の現場で、好んで使用される正規表現関数は、
POSIX互換かPerl互換かどちらでしょうか?

場合によりけりでしょうか?
それとも、Perlを知らないプログラマーは、ereg や ereg_replace しか使っていなかったり、
逆に、機能が豊富な preg_match や preg_replace の方が好まれるのでしょうか?

今後、PHPプログラマーと共同で開発することを考えれば、どちらを使用すればいいでしょうか?

※POSIX互換では、数字の \d って使えないんですか?

Aベストアンサー

アンケートのつもりで気軽に答えます。
自分は日本語を使う可能性があれば、mb_ereg、
日本語を使う必要が絶対に無いと分かっていれば、
もしくは、日本語が入っても問題なく動きそうなら、pregを使います。
eregを使うことはありません。

QPHPのeregとereg_replaceの細かい使い方がわかりません。

PHPのソースの解読をしているのですが、聞く人が今いないために質問させてください。
マニュアルを見たところ、eregは検索、ereg_replaceは置換ということはわかったのですが、以下の文はどのような意味になるのでしょうか。お願いします。

if ( strlen ( $dat ) > 0 ) {
$dat = ereg_replace ( "\/\/.*", "", $dat );
if ( ereg ( '^\[.*\]', $dat ) ) {
$idx = trim ( $dat, "[] " );
}
}

Aベストアンサー

こんにちは。
ereg → 正規表現検索
ereg_replace → 正規表現置換
ということですので
【$dat = ereg_replace ( "\/\/.*", "", $dat );】
1.$dat変数から"\/\/.*"にマッチした部分は空文字に置換
【if ( ereg ( '^\[.*\]', $dat ) ) {】
2.置換された$datに'^\[.*\]'にマッチする部分がある場合は$idx = trim ( $dat, "[] " );を実行
というような流れです。ご参考までに

QPerlの XMLin()はPHPではどうなるのでしょうか? PerlからPHP part3

Perlの以下のソースをPHPに置き換えた場合、
どのように書くのが一般的でしょうか?

PHPは4.3系を使っています。

# Perl
use XML::Simple;

my $xml = XMLin( $content );
my $namae = $xml->{NAMAE};

PHPとXMLのお勧め本も知りたいです。

Aベストアンサー

PHP4.3以降であればDOM XML関数をおつかいになると
よいでしょう。

参考URL:http://www.php.net/manual/ja/ref.domxml.php

QPHPフォーム→PHP確認画面で、文字化け

PHPでHTMLのフォームを吐き出し、そこから、PHPの確認画面に移行する際、文字化けが発生するのですが、どうしたらよいでしょうか?

Aベストアンサー

とりあえずheaderでキャラクターセットを指定してあげてください
header("Content-Type:text/html;charset=euc-jp");

それで直らない場合は出力時に文字コードをコンバートしてあげてください
print mb_convert_encoding($str,"EUC","SJIS");

参考URL:http://www.php.net/manual/ja/function.header.php,http://www.php.net/manual/ja/ref.mbstring.php

Qindex.php から外部関数に飛び、文字列を返してきてindex.

index.php から外部関数に飛び、文字列を返してきてindex.phpで
XML形式で表示するプログラムはどのように書けばいいんでしょうか?
/* ---func1.php--- */
function func1($aa,$bb){
$xml_code = "<func1>\n";
$xml_code .= "<aaa>".$aaa."</aaa>\n";
$xml_code .= "<bbb>".$bbb."</bbb>\n";
$xml_code .= "</func1>\n";
return ($xml_code);
}
/* ---func2.php--- */
function func2($cc,$dd){
//DBからデータを取得して
$sql = "SELECT ccc, ddd, eee, tel FROM tbl_a WHERE id = ".$id;

$moji_db = "";
$result = mysql_query($sql);

while ($row = mysql_fetch_assoc($result)){
$xml_code = "<func2>\n";
$xml_code .= "<ccc>".$row['ccc']."</ccc>\n";
$xml_code .= "<ddd>".$row['ddd']."</ddd>\n";
$xml_code .= "<eee>".$row['eee']."</eee>\n";
$xml_code .= "</func2>\n";
}
return ($xml_code);
}

index.php で
両方の$xml_codeを出力する

以上のようなプログラムなんですけど、
index.phpでのxmlでの表示の仕方がわかりません。

/* ---index.php--- */
<?php
// require
func1.phpとfunc2.php

function xml_make(&$xml ){
// DB 接続

// XML Header生成
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n";
echo func1();
echo func2();

// XML Footer生成

// DB 切断
}
?>
としてindex.phpを実行するとIEで以下のエラーが出ます。
(firefoxではでません。両ブラウザ共、ソースを表示するとXML形式にはなっていますが・・)
「XML ページを表示できません
XSL スタイル シートを使用した XML 入力は表示できません。
エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。
--------------------------------------------------------------------------------
XML ドキュメント内では最上位の要素に限り、使用できます。


それと文字列($xml_code)をSimpleXMLで処理するにはどうしたらいいのでしょう?

index.php から外部関数に飛び、文字列を返してきてindex.phpで
XML形式で表示するプログラムはどのように書けばいいんでしょうか?
/* ---func1.php--- */
function func1($aa,$bb){
$xml_code = "<func1>\n";
$xml_code .= "<aaa>".$aaa."</aaa>\n";
$xml_code .= "<bbb>".$bbb."</bbb>\n";
$xml_code .= "</func1>\n";
return ($xml_code);
}
/* ---func2.php--- */
function func2($cc,$dd){
//DBからデータを取得して
$sql = "SELECT ccc, ddd, eee, tel FROM tbl_a WHERE id = ".$id;

$moji_db = "";
$res...続きを読む

Aベストアンサー

IEで以下のエラーが出ます。

=>XMLのドキュメントルートがないからじゃないですか。

header('Content-Type: text/xml; charset=utf-8');
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n";
echo "<hoge>";
echo func1();
echo func2();
echo "</hoge>";

それから改行文字は不要だと思うんですけど(人間が見るなら見やすいですが)

SimpleXMLで処理するにはどうしたらいいのでしょう?

=>simplexml_load_string関数とかsimplexml_load_file関数です。

http://www.phppro.jp/phpmanual/php/book.simplexml.html
SimpleXMLは、出来上がってるXMLを簡易にパースするのに使います。

新たにXMLを生成するなら、DOM関数では、
http://www.php.net/manual/ja/book.dom.php

IEで以下のエラーが出ます。

=>XMLのドキュメントルートがないからじゃないですか。

header('Content-Type: text/xml; charset=utf-8');
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n";
echo "<hoge>";
echo func1();
echo func2();
echo "</hoge>";

それから改行文字は不要だと思うんですけど(人間が見るなら見やすいですが)

SimpleXMLで処理するにはどうしたらいいのでしょう?

=>simplexml_load_string関数とかsimplexml_load_file関数です。

http://www.phppro.jp/phpmanual/php/book...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報