PHP URLセグメントをstr_replace()に置き換えます。 -- php フィールド と string フィールド と replace フィールド と silverstripe フィールド 関連 問題

PHP replace URL segment with str_replace();












-4
vote

問題

日本語

私のドメイン名の後に<コード> "/foo/bar/url/" がまっすぐになっています。

私が欲しいのは、私の文字列に最後から集中のスラッシュシンボルを見つけて、スラッシュシンボル+ハッシュタグと交換することです。このように: / から 99887668 (問題は、URLの取得方法ではなく、その処理方法)

これがどのように達成されるかもしれませんか?そのようなものをするためのベストプラクティスは何ですか? 現時点では、str_replace()を使うべきだと確信しています

UPD。 <コード> preg_replace() は私の場合に適していると思います。しかし、その後別の問題があります。問題を解決するために正規XPがどのように見えるべきですか?

p.S。 <コード> ERROR: This node was not found in the expected index. 0 Frameworkを使用している場合だけ( v3.1.12

英語

I have "/foo/bar/url/" coming straight after my domain name.

What I want is to find penultimate slash symbol in my string and replace it with slash symbol + hashtag. Like so: from / to /# (The problem is not how to get URL, but how to handle it)

How this could be achieved? What is the best practice for doing stuff like that? At the moment I'm pretty sure that I should use str_replace();

UPD. I think preg_replace() would be suitable for my case. But then there is another problem: what should regexp look like in order to make my issue solved?

P.S. Just in a case I'm using SilverStripe framework (v3.1.12)

</div
           
       
       

回答リスト

1
 
vote
vote
ベストアンサー
 
<事前> <コード> onMeasure()1

出力

<事前> <コード> onMeasure()2

最後の onMeasure()3

を削除したい場合 <事前> <コード> onMeasure()4
 
$url = '/foo/bar/url/';  if (false !== $last = strrpos($url, '/')) {     if (false !== $penultimate = strrpos($url, '/', $last - strlen($url) - 1)) {         $url = substr_replace($url, '/#', $penultimate, 1);     } }  echo $url; 

This will output

/foo/bar/#url/ 

If you want to strip the last /:

echo rtrim($url, '/'); // print /foo/bar/#url 
</div
 
 
1
 
vote

ここでは機能する方法です。おそらくクリーナーな方法があります。

<事前> <コード> onMeasure()5
 

Here is a method that would function. There are probably cleaner ways.

// Let's assume you already have $url_string populated $url_string = "http://whatever.com/foo/bar/url/";  $url_explode = explode("\",$url_string); $portion_count = count($url_explode);  $affected_portion = $portion_count - 2; // Minus two because array index starts at 0 and also we want the second to last occurence  $i = 0; $output = ""; foreach ($url_explode as $portion){      $output.=$portion;      if ($i == $affected_portion){         $output.= "#";     }      $i++;  }  $new_url = $output; 
</div
 
 
1
 
vote

今すぐ

を持っていると仮定する <事前> <コード> <ImageView android:id="@+id/office" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/office" android:src="@raw/office" /> 16

あなたは

のように組み合わせることができます <事前> <コード> onMeasure()7

ここで、<コード> onMeasure()8 はe.である。 / foo / bar と<コード>はは my-urlsegment

です。

<コード> onCreate()0 は、親ページがあるか、SitTree

の最上位レベルにあるかどうかを確認します。
 

Assuming you now have

$url = $this->Link(); // e.g. /foo/bar/my-urlsegment 

You can combine it like

$handledUrl = $this->ParentID      ? $this->Parent()->Link() + '#' + $this->URLSegment     : $this->Link(); 

where $this->Parent()->Link() is e.g. /foo/bar and $this->URLSegment is my-urlsegment

$this->ParentID also checks if we have a parent page or are on the top level of SiteTree

</div
 
 
1
 
vote

私はこの質問に答えるために遅すぎるかもしれませんが、私はこれがあなたを助けるかもしれないと思いました。

のように<コード> preg_replace を単に使用することができます。 <事前> <コード> $url = '/foo/bar/url/'; echo preg_replace('~(/)(w+)/$~',"$1#$2",$url);

出力:

<事前> <コード> /foo/bar/#url
 

I might be tooooo late for answering this question but I thought this might help you. You can simply use preg_replace like as

$url = '/foo/bar/url/'; echo preg_replace('~(/)(w+)/$~',"$1#$2",$url); 

Output:

/foo/bar/#url 
</div
 
 
0
 
vote

私の場合にこれは私の問題を解決しました:

<事前> <コード> $url = $this->Link(); $url = rtrim($url, '/'); $url = substr_replace($url, '#', strrpos($url, '/') + 1, 0);
 

In my case this solved my problem:

$url = $this->Link(); $url = rtrim($url, '/'); $url = substr_replace($url, '#', strrpos($url, '/') + 1, 0); 
</div
 
 

関連する質問

0  SilverStripe変更ページタイプアイコン  ( Silverstripe change page type icon ) 
フレームワークのデフォルトのアイコンを使用して、特定のページタイプのページタイプアイコン(AKA Sittreeアイコン)をどのように変更しますか? 例:フォームページアイコン。 edit Spriteファイル内のアイコンの1つを使用します。 s...

0  SilverStripe CMSページへの発表/警告を追加する  ( Silverstripe adding announcements warnings to cms pages ) 
新鮮なSilverStrepeのインストール後のインストールファイルの削除時の警告メッセージと同様に、管理ページの上にアナウンスメッセージを追加する方法はありますか? ...

3  SilverStripe 3.1.5 - アップロードエラーSyntaxError:予期しないトークン<  ( Silverstripe 3 1 5 upload error syntaxerror unexpected token ) 
.svgファイルをアップロードする必要があります。そのことをするために、私のconfig.ymlに「svg」を追加しました。また、すべての資産ディレクトリにはChmod 777があります。 ファイルはアップロードされますが添付されていません。その代わりに、ア...

0  SilverStrepe 3.4多数のSQLQuery  ( Silverstripe 3 4 sqlquery many many ) 
私は常習的な関係からスタッフを手に入れようとしています。 デイジーはオフィスとワークショップ Dagobertはオフィス DAISYとDAGOBERTは、IMPRESSUM(ADIMPRESSUM)に表示されるべきです。 私の関係テーブルのデイジーは、 s...

1  gitlab-ciでのSilverStrepモジュールテストの環境を設定する方法  ( How to set up the enviroment for silverstripe module testing in gitlab ci ) 
職場のSilverStripeサイトの内部テストのためにgitlab-ciを設定しようとしています。個々のサイトでは、このセットアップは問題ありません、サイトが複製され、テストが実行され、すべてが大丈夫です。しかし、私はこれらのサイトにわたって共有されているい...

2  POS /干渉-1のSilverStrep制御  ( Silverstripe control with pos interation 1 ) 
データを制御して、次のことを生成することができます。 <事前> <コード> Loop 1 - name Loop 2 - name1 Loop 3 - name2 - etc 私はコントロール内でPOSを使うことができましたが、これが0から始める必要があり...

0  SilverStrepは相対リンクとして外部URLをレンダリングします  ( Silverstripe rendering external urls as relative links ) 
相対リンクとして外付けのURLを扱うSilverStrepeの問題があります。 データオブジェクトを持っています: <事前> <コード> class Artist extends DataObject { private static $db = arra...

7  SilverStripe:別のタブの前にタブを挿入するにはどうすればよいですか。  ( Silverstripe how do i insert a tab before another tab ) 
root.content.mainの前に、運のなしで新しい管理タブを挿入しようとしています。私は試しました: <事前> <コード> $fields->insertBefore(new Tab('Root.Content.Overview', 'Overvie...

1  SilverStrepe ModelAdminを削除します  ( Silverstripe remove modeladmin search ) 
<コード> ModelAdmin Pages?の検索機能を削除する方法はありますか? 今のところCSSを使用していますが、より良い解決策があるはずです。 <コード> #filters-button { display: none; } ...

2  SilverStripe wysiwyg画像がbase_tagなしで動作しない  ( Silverstripe wysiwyg images not working without base tag ) 
私は私のテンプレートからbase_tagを削除しました SVGの使用を可能にします。アイコンスプライト。これの副作用は、ホームページの中断以外のページの画像です。 HTMLEditorField::saveInto() メソッドは、イメージ上の相対URLを...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有